package com.moez.QKSMS.ui.settings; import android.app.Dialog; import android.app.DialogFragment; import android.app.TimePickerDialog; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceManager; import android.text.format.DateFormat; import android.util.Log; import android.widget.TimePicker; import com.moez.QKSMS.common.utils.DateFormatter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener { private final String TAG = "TimePickerPreference"; private Preference mPreference; private Preference.OnPreferenceChangeListener mListener; private SharedPreferences mPrefs; public void setPreference(Preference preference) { mPreference = preference; } public void setOnPreferenceChangeListener(Preference.OnPreferenceChangeListener l) { mListener = l; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { if (mPreference == null) { Log.w(TAG, "No preference set"); return null; } mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("H:mm"); // Use the current time as the default values for the picker final Calendar c = Calendar.getInstance(); try { Date date = simpleDateFormat.parse(mPrefs.getString(mPreference.getKey(), "6:00")); c.setTime(date); } catch (ParseException e) { e.printStackTrace(); } int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); boolean isUsing24HourTime = DateFormat.is24HourFormat(getActivity()); return new TimePickerDialog(getActivity(), this, hour, minute, isUsing24HourTime); } public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // Format the minutes with padded zeros so we don't get stuff like "6:2" instead // of 6:02 String newValue = String.format("%d:%02d", hourOfDay, minute); mPrefs.edit().putString(mPreference.getKey(), newValue).apply(); mPreference.setSummary(DateFormatter.getSummaryTimestamp(getActivity(), newValue)); mListener.onPreferenceChange(mPreference, newValue); SettingsFragment.updateAlarmManager(getActivity(), true); } }